# Copyright 2019 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# NOTE: This file is auto generated by the elixir code generator program.
# Do not edit this file manually.

defmodule GoogleApi.IAM.V1.Model.Oidc do
  @moduledoc """
  Represents an OpenId Connect 1.0 identity provider.

  ## Attributes

  *   `allowedAudiences` (*type:* `list(String.t)`, *default:* `nil`) - Optional. Acceptable values for the `aud` field (audience) in the OIDC token. Token exchange requests are rejected if the token audience does not match one of the configured values. Each audience may be at most 256 characters. A maximum of 10 audiences may be configured. If this list is empty, the OIDC token audience must be equal to the full canonical resource name of the WorkloadIdentityPoolProvider, with or without the HTTPS prefix. For example: ``` //iam.googleapis.com/projects//locations//workloadIdentityPools//providers/ https://iam.googleapis.com/projects//locations//workloadIdentityPools//providers/ ```
  *   `issuerUri` (*type:* `String.t`, *default:* `nil`) - Required. The OIDC issuer URL. Must be an HTTPS endpoint.
  *   `jwksJson` (*type:* `String.t`, *default:* `nil`) - Optional. OIDC JWKs in JSON String format. For details on the definition of a JWK, see https://tools.ietf.org/html/rfc7517. If not set, the `jwks_uri` from the discovery document(fetched from the .well-known path of the `issuer_uri`) will be used. Currently, RSA and EC asymmetric keys are supported. The JWK must use following format and include only the following fields: { "keys": [ { "kty": "RSA/EC", "alg": "", "use": "sig", "kid": "", "n": "", "e": "", "x": "", "y": "", "crv": "" } ] }
  """

  use GoogleApi.Gax.ModelBase

  @type t :: %__MODULE__{
          :allowedAudiences => list(String.t()) | nil,
          :issuerUri => String.t() | nil,
          :jwksJson => String.t() | nil
        }

  field(:allowedAudiences, type: :list)
  field(:issuerUri)
  field(:jwksJson)
end

defimpl Poison.Decoder, for: GoogleApi.IAM.V1.Model.Oidc do
  def decode(value, options) do
    GoogleApi.IAM.V1.Model.Oidc.decode(value, options)
  end
end

defimpl Poison.Encoder, for: GoogleApi.IAM.V1.Model.Oidc do
  def encode(value, options) do
    GoogleApi.Gax.ModelBase.encode(value, options)
  end
end
